/**
 * 代号:甲骨兽进化 2017：厚溥
 * 文件名：BaseDao.java
 * 创建人：jh
 * 日期：2018年4月9日
 * 修改人：
 * 描述：
 */
package org.kd.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.kd.common.base.controller.BaseController;
import org.kd.model.Emp;
import org.kd.model.Message;
import org.kd.model.DTO.EmpBTO;
import org.kd.model.DTO.MessageDTO;
import org.kd.service.DeptBTOService;
import org.kd.service.EmpBTOService;
import org.kd.service.MessageService;
import org.kd.utils.JsonReturnData;
import org.kd.utils.PageTable;
import org.kd.utils.WebConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;

/**
 * 用途：业务模块名称
 */
@Controller
@RequestMapping("/layimController")
public class LayimController extends BaseController{
	Logger logger = LoggerFactory.getLogger(getClass());

	@Autowired
	EmpBTOService empBTOService;
	@Autowired
	DeptBTOService deptBTOService;
	@Value("${sys.webPath}")
	String webPath;
	@Autowired
	MessageService messageService;
	/**
	 *  @功能:跳转到聊天页面
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月13日
	 *  @param modelMap
	 *  @return  
	 */
	@RequestMapping("/layimChat")
	public String layimChat(ModelMap modelMap) {
		logger.info("===============进入"+this.getClass().getName()+"列表==================");
		return "layim/layimChat";
	}
	
	/**
	 *  @功能:跳转到历史记录页面
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月13日
	 *  @param modelMap
	 *  @return  
	 */
	@RequestMapping("/chatlogPage")
	public String chatlogPage(ModelMap modelMap) {
		return "layim/chatlog";
	}
	
	/**
	 *  @功能:查看历史消息
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月16日
	 *  @param message
	 *  @return  
	 */
	@RequestMapping("/chatlog")
	@ResponseBody
	public String chatlog(Integer page, Integer limit,Integer id,String Type) {
		PageTable<List<Message>> pageTable = new PageTable<List<Message>>();
        Message model= new Message(); 
        model.setToId(id);
        model.setType(Type);
        model.setDelFlag(WebConstant.NODELETECODE);
        PageInfo<Message> pageInfo = messageService.queryPageListByParam(page, limit, model);
        pageTable.setCode(WebConstant.PAGESUCCESSCODE);
		pageTable.setMsg(WebConstant.SUCCESS);
		pageTable.setData(pageInfo.getList());
		pageTable.setCount(pageInfo.getTotal());
		return responseAPI.getJsonString(pageTable);
	}
	
	/**
	 * @功能:layim页面初始化
	 * @作者:jh @代号:甲骨兽进化
	 * @时间:2017年12月24日
	 * @param id
	 * @return
	 */
	@RequestMapping("/init")
	@ResponseBody
	@RequiresPermissions("layim:init") //标记权限
	public String init(HttpSession session) {
		Emp e = (Emp) session.getAttribute("user");
		Integer id = e.getId();
		Map<String, Object> data = new HashMap<String, Object>();
		JsonReturnData<Map<String, Object>> jsonReturnData = new JsonReturnData<Map<String, Object>>();
		// 用户个人信息(mine)
		data.put("mine", empBTOService.queryById(id));
		// friend
		data.put("friend", deptBTOService.getFriendList(id));
		// group
		data.put("group", deptBTOService.queryByEmpId(id));

		// 总
		jsonReturnData.setCode(WebConstant.PAGESUCCESSCODE);
		jsonReturnData.setMsg(WebConstant.SUCCESS);
		jsonReturnData.setData(data);

		return  responseAPI.getJsonString(jsonReturnData);
	}
	
	
	/**
	 *  @功能:获取群组
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月10日
	 *  @param id
	 *  @return  
	 */
	@RequestMapping("/getMembers")
	@ResponseBody
	@RequiresPermissions("layim:getMembers") //标记权限
	public String getMembers(Integer id) {
		Map<String, Object> data = new HashMap<String, Object>();
		JsonReturnData<Map<String, Object>> jsonReturnData = new JsonReturnData<Map<String, Object>>();
		List<EmpBTO> all = this.forEachList(empBTOService.queryByDeptId(id));
		
		data.put("list", all);
		data.put("owner", "该参数被隐藏");
		jsonReturnData.setData(data);
		return  responseAPI.getJsonString(jsonReturnData);
	}
	/**
	 *  @功能:处理头像
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月13日
	 *  @param queryByDeptId
	 *  @return  
	 */
	private List<EmpBTO> forEachList(List<EmpBTO> queryByDeptId) {
		// TODO Auto-generated method stub
		List<EmpBTO> list = new ArrayList<EmpBTO>();
		Iterator<EmpBTO> iterator = queryByDeptId.iterator();
		while (iterator.hasNext()) {
			EmpBTO empBTO = (EmpBTO) iterator.next();
			empBTO.setAvatar(empBTO.getAvatar() == null || "".equals(empBTO.getAvatar().trim()) ? webPath +"/img/1.jpg" : webPath + empBTO.getAvatar());
            list.add(empBTO);
		}
		return list;
	}
	
	
	/**
	 *  @功能:好友msg
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月17日
	 *  @param page
	 *  @param limit
	 *  @return  
	 */
	@RequestMapping("/ajaxListFriend")
	@ResponseBody
	public String ajaxListFriend(Integer page, Integer limit,MessageDTO mb) {
		PageTable<List<MessageDTO>> pageTable = new PageTable<List<MessageDTO>>();
		mb.setDelFlag(WebConstant.NODELETECODE);
		mb.setType(WebConstant.FRIEND);
		PageInfo<MessageDTO> pageInfo = messageService.queryAcceptWhiteFriendListByParam(page, limit, mb);
		pageTable.setCode(WebConstant.PAGESUCCESSCODE);
		pageTable.setMsg(WebConstant.SUCCESS);
		pageTable.setData(pageInfo.getList());
		pageTable.setCount(pageInfo.getTotal());
		return responseAPI.getJsonString(pageTable);
	}
	
	/**
	 *  @功能:群msg
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月17日
	 *  @param page
	 *  @param limit
	 *  @return  
	 */
	@RequestMapping("/ajaxListGroup")
	@ResponseBody
	public String ajaxListGroup(Integer page, Integer limit,MessageDTO mb) {
		PageTable<List<MessageDTO>> pageTable = new PageTable<List<MessageDTO>>();
		mb.setDelFlag(WebConstant.NODELETECODE);
		mb.setType(WebConstant.GROUP);
		PageInfo<MessageDTO> pageInfo = messageService.queryAcceptWhiteGroupListByParam(page, limit, mb);
		pageTable.setCode(WebConstant.PAGESUCCESSCODE);
		pageTable.setMsg(WebConstant.SUCCESS);
		pageTable.setData(pageInfo.getList());
		pageTable.setCount(pageInfo.getTotal());
		return responseAPI.getJsonString(pageTable);
	}
	
	
	/**
	 *  @功能:单点删除
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月17日
	 *  @param message
	 *  @return  
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public String delete(Message message) {
		JsonReturnData<String> jsonReturnData = new JsonReturnData<>();
		if (message.getCid() != null) {
			message.setDelFlag(WebConstant.DELETECODE);
			messageService.update(message);
			jsonReturnData.setCode(WebConstant.SUCCESSCODE);
			jsonReturnData.setMsg("删除成功");
		}

		return responseAPI.getJsonString(jsonReturnData);
	}
	
	/**
	 *  @功能:多删
	 *  @作者:jh @代号:甲骨兽进化
	 *  @时间:2018年4月17日
	 *  @param ids
	 *  @return  
	 */
	@RequestMapping("/deletes")
	@ResponseBody
	public String deletes(String ids) {
		JsonReturnData<String> jsonReturnData = new JsonReturnData<>(WebConstant.ERRORCODE, "批量删除失败");
		if (!StringUtils.isEmpty(ids)) {
			messageService.updateDeletes(ids);
			jsonReturnData.setCode(WebConstant.SUCCESSCODE);
			jsonReturnData.setMsg("批量删除成功");
		}
		return responseAPI.getJsonString(jsonReturnData);
	}
}
